public class NM {
    //算法题：水果成蓝；
    public static int fun(int[] array){
        //定义一个哈希表存放水果以及水果的种类；
        int n= array.length;
        int[] hash=new int[n+1];
        //接下来进行水果的采摘操作；
        int ret=0;//进行结果记录的变量；
        for(int left=0,right=0,kind=0;right<n;right++){
            //利用kind进行记录水果的种类；
            //1，进行进窗口操作；
            int in=array[right];
            //先进行判断：只用一种水果的个数为零是，添加进同种水果的时候；
            // 才进行种类个数的增加；
            if(hash[in]==0){
                kind++;
            }
            hash[in]++;//进行某种水果的个数增加；
            //2.进行判断何时执行出窗口操作；
            while(kind>2){
                //3.进行出窗口操作；
                int out=array[left];
                hash[out]--;
                if(hash[out]==0){
                    kind--;//一直到某种水果的个数为零时，才进行水果种类的减少；
                }
                left++;
            }
            //进行更新结果操作；
            ret=Math.max(ret,right-left+1);
        }
        return ret;
    }
    public static void main(String[] args){
        int[] array={0,1,2,2};
        int ret=fun(array);
        System.out.println(ret);

    }
}
